"""本文件包含应用程序的用户模型。由于用户由外部系统管理，此模型仅用于保持与会话的关联。"""

from typing import (
    TYPE_CHECKING,
    List,
)

from sqlmodel import (
    Field,
    Relationship,
)

from app.models.base import BaseModel

if TYPE_CHECKING:
    from app.models.session import Session


class User(BaseModel, table=True):
    """用于存储用户账户的用户模型。由于用户由外部系统管理，此模型仅用于保持与会话的关联。

    属性:
        id: 主键
        email: 用户邮箱（唯一）
        created_at: 用户创建时间
        sessions: 与用户聊天会话的关系
    """

    id: int = Field(default=None, primary_key=True)
    email: str = Field(unique=True, index=True, default="")
    sessions: List["Session"] = Relationship(back_populates="user")
